<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <script src="./lib/vue.js"></script>
    </head>
    <body>
        <div id="app">
            <input type="text" v-guangbiao v-model="msg" name="" id="dd">
            <div v-lbs.enter="msg">

            </div>
        </div>
    </body>
    <script>
        // 注册一个全局自定义指令 directive
        Vue.directive('guangbiao',{
            /* 
                钩子函数
            */
            // bind：只调用一次，指令第一次绑定到元素时调用
            bind:function(){
               /*  console.log("第一次指令绑定到元素上的时候调用,仅调用一次"); */
            },
            // inserted插入函数
            inserted:function(el,binding,vnode,oldVnode){
                // 插入函数,在元素往父元素插入时候调用
               /*  console.log(el);
                console.log(binding);//  指令对象
                console.log(vnode);// 虚拟节点   虚拟dom
                console.log(oldVnode);
                el.focus(); */
            }
        })
        Vue.directive('lbs',{
            /* 
                钩子函数
            */
            // bind：只调用一次，指令第一次绑定到元素时调用
            bind:function(){
                console.log("第一次指令绑定到元素上的时候调用,仅调用一次");
            },
            // inserted插入函数
            inserted:function(el,binding,vnode,oldVnode){
                // 插入函数,在元素往父元素插入时候调用
                console.log(el);
                console.log(binding);//  指令对象
                console.log(vnode);// 虚拟节点   虚拟dom
                console.log(oldVnode);
                // 循环生成一个列表
                let str = '<ul>';
                for (let i = 0; i <5; i++) {
                    str += `<li>${binding.rawName}:${binding.value}</li>`
                }
                str += '</ul>';
                el.innerHTML = str;
            },
            update:function(el,binding){
                console.log('update');
                let str = '<ul>';
                for (let i = 0; i <5; i++) {
                    str += `<li>${binding.rawName}:${binding.value}</li>`
                }
                str += '</ul>';
                el.innerHTML = str;
            }
        })
        let app = new Vue({
            el:'#app',
            data:{
                msg:"hello"
            }
        })
    </script>
</html>